﻿using PHMEE.DTOS.StatusMonitor;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PHMEE.IServices.StatusMonitor
{
    public interface IVesselStatusMonitorAppService
    {

        /// <summary>
        /// 获取船舶参数
        /// </summary>
        /// <param name="VesselId"></param>
        /// <returns></returns>
        Task<VesselMainModel> GetVesselMainParams(Guid VesselId);

        /// <summary>
        /// 获取航行参数
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<VesselNavigationModel> GetVesselNavigationParams(Guid VesselId, VesselBaseInput input);

        /// <summary>
        /// 获取GPS参数
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="OnVessel"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<VesselGpsModel> GetVesselGpsParams(Guid VesselId, bool OnVessel, VesselBaseInput input);

        /// <summary>
        /// 获取Draft参数
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="OnVessel"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<VesselDraftModel> GetVesselDraftParams(Guid VesselId, bool OnVessel, VesselBaseInput input);


        /// <summary>
        /// 获取MainEngine参数
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="OnVessel"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<VesselMainEngineModel> GetVesselMainEngineParams(Guid VesselId, bool OnVessel, VesselBaseInput input);


        /// <summary>
        /// 获取ShaftSystem参数
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="OnVessel"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<VesselShaftSystemModel> GetVesselShaftSystemParams(Guid VesselId, bool OnVessel, VesselBaseInput input);


        Task<CurrentWeatherDto> GetCurrentWeatherAsync(Guid vesselId);
    }
}
